﻿/// <remarks>
/// 系统名称            :   ITALKI 翻译系统
/// 模块名称            :   Translate
/// 文件代码            :   
/// 功能概述            :   
/// 创建人              :   Snail
/// 创建日期            :   2008.08.20
/// 版本号              :   1.0.0.0
/// ----------< 修改履历 >---------------------------------------------------------------
/// 修改日期          修改人              修改内容                           版本号
/// 2008.08.25      Snail             修正翻页错误                       1.0.0.1
/// ------------------------------------------------------------------------------------
/// (C) 2007-2008 上海微语信息技术有限公司  版权所有。保留所有权利。
/// ------------------------------------------------------------------------------------
/// </remarks>


using System.Text.RegularExpressions;
using System.Xml;
using BLF.WWW_WWW.translate;
using Lx.Web.Common.ControlsUI;
using Lx.Web.Common.UI;
using Model.WWW_WWW.translate;

namespace Web.Control.WWW.translate
{

    using System;
    using System.Collections.Generic;
    using System.Web;

    /// <summary>
    ///translate_list 的摘要说明
    /// </summary>
    public class translate_list : BaseControl
    {

        //所有翻译条目
        protected List<TranslateItem> AllTranslateItem;
        protected int ContentCount;
        protected int PageIndex = 1;
        protected int PageSize = 20;
        protected string LangName;

        /// <summary>
        /// 页面装载事件。
        /// </summary>
        ///修改日期          修改人              修改内容                           版本号
        ///2008.08.20		 Snail				 创建该方法                         1.0.0.0
        protected override void OnLoad(EventArgs e) {

            //判断是否登录
            if (HttpContext.Current.User.Identity.Name == "") {
                Response.Redirect(WWWHost + "/User/login.htm?ReturnUrl=" + Request.Url.AbsoluteUri.Split('?')[0]);
            }

            //如果未传递正确的语言参数则跳转到translate首页
            if (string.IsNullOrEmpty(Request.QueryString["lang"])) {
                Response.Redirect("/translate/default.htm");
            }

            //检查语言参数是否匹配。
            XmlDocument xDoc = new XmlDocument();
            try {
                xDoc.Load(string.Format(Server.MapPath("LangSet/LangSet_{0}.xml"), Globals.Language));
            } catch {
                xDoc.Load(string.Format(Server.MapPath("LangSet/LangSet_en-us.xml"), Globals.Language));
            }

            XmlNodeList xnl = xDoc.SelectNodes("//LangSet/Lang");
            if (xnl != null) {
                bool paramOK = false;
                foreach (XmlNode xn in xnl) {
                    if (xn.ChildNodes[0].InnerText == Request.QueryString["lang"]) {
                        LangName = xn.ChildNodes[1].InnerText;
                        paramOK = true;
                    }
                }
                if (!paramOK)
                    Response.Redirect("/translate/default.htm");
            } else
                Response.Redirect("/translate/default.htm");


            if (!string.IsNullOrEmpty(Request.QueryString["p"])) {
                if (Request.QueryString["p"] == "l") {
                    PageIndex = 999;
                } else {
                    int.TryParse(Request.QueryString["p"], out PageIndex);
                    if (PageIndex == 0) {
                        PageIndex = 1;
                    }
                }
            }


            //获得我的翻译
            AllTranslateItem = Translate.GetAllTranslateItem(Request.QueryString["lang"], (PageIndex - 1) * PageSize, PageSize, out ContentCount);

        }

        /// <summary>
        /// 高亮带有{数字}、或HTML代码的文本。
        /// </summary>
        /// <param name="text">原文。</param>
        /// <returns>加色后的文本。</returns>
        ///2008.08.07		 Snail				 创建该方法                         1.0.0.0
        protected string HighLightCode(string text) {
            Regex regex = new Regex(@"<(\S*?)[^>]*>");
            MatchCollection mc = regex.Matches(text);
            text = regex.Replace(text, new MatchEvaluator(replaceHTML));



            regex = new Regex(@"{\d+}");
            mc = regex.Matches(text);
            for (int i = 0; i < mc.Count; i++)
                text = text.Replace(mc[i].Value, string.Format("<font color=\"red\">{0}</font>", mc[i].Value));

            return text;
        }

        /// <summary>
        /// 替换HTMLCode
        /// </summary>
        /// <returns>替换后的文本</returns>
        ///2008.08.13		 Snail				 创建该方法                         1.0.0.0
        private string replaceHTML(Match match) {
            return "<font color=\"red\">" + match.Value.Replace("<", "&lt;").Replace(">", "&gt;") + "</font>";
        }
    }

}